package com.aspose.cells;

class zbay extends zbax {
   private byte[][] a = new byte[this.e()][];
   private int b = -1;
   private int c = 0;
   private int d;
   private int e;
   private int f;
   private int g;
   private zaau h;
   private zbpx i;
   private zbnx j = new zbnx();
   private zbny k = new zbny();
   private zbnz l = new zbnz();
   private zbbi m;
   private boolean n = false;

   zbay(int var1, int var2, int var3, int var4, zbpx var5, zaau var6) {
      this.d = 97 + (this.k(var3) << 5) / 2;
      this.j(var2, var4);
      this.i = var5;
      this.h = var6;
   }

   byte[] h(int var1) {
      return this.a[var1 >> 5];
   }

   int i(int var1) {
      return a(this.a[var1 >> 5], var1 & 31);
   }

   int j(int var1) {
      byte[] var3 = this.a[var1 >> 5];
      int var2 = (var1 & 31) * 3;
      return 97 + ((var3[var2 + 1] & 255) << 16 | (var3[var2 + 2] & 255) << 8 | var3[var2 + 3] & 255);
   }

   private static int a(byte[] var0, int var1) {
      if (var1 == 0) {
         return 97;
      } else {
         int var2 = (var1 - 1) * 3;
         return 97 + ((var0[var2 + 1] & 255) << 16 | (var0[var2 + 2] & 255) << 8 | var0[var2 + 3] & 255);
      }
   }

   private static void a(byte[] var0, int var1, int var2) {
      int var4 = var2 - 97;
      int var3 = (var1 - 1) * 3;
      var0[var3 + 1] = (byte)(var4 >> 16);
      var0[var3 + 2] = (byte)(var4 >> 8 & 255);
      var0[var3 + 3] = (byte)(var4 & 255);
   }

   int d() {
      return this.g;
   }

   int k(int var1) {
      return zbbi.o(65535) + zbbi.q(var1);
   }

   int a(int var1, int var2, int var3, int var4, int var5) {
      int var6 = var5;
      boolean var7;
      if (var5 < 0) {
         var7 = true;
         var6 = -var5;
      } else {
         var7 = false;
      }

      byte[] var8 = this.a[var1 >> 5];
      int var9 = var1 & 31;
      if (var9 == (var8[0] & 255) - 1) {
         if (var8.length - var4 < var6) {
            byte[] var14 = new byte[var4 + var6 + this.m(var8[0] & 255, var3)];
            System.arraycopy(var8, 0, var14, 0, var3);
            var8 = var14;
            this.a[var1 >> 5] = var14;
         }

         if (!var7) {
            var6 = this.n(var8.length - var4, var6);
         }

         a(var8, var8[0] & 255, var4 + var6);
         return var1;
      } else {
         int var10 = 97;
         if (var9 > 0) {
            var10 = zbbi.d(var8, a(var8, var9 - 1), var2);
            if (var2 - var10 >= var6) {
               if (!var7) {
                  var6 = this.n(var2 - var10, var6);
               }

               System.arraycopy(var8, var2, var8, var2 - var6, var3 - var2);
               a(var8, var9, var2 - var6);
               return var1;
            }
         }

         int var11 = a(var8, var9 + 2);
         int var12 = zbbi.d(var8, var4, var11);
         if (var11 - var12 >= var6) {
            if (!var7) {
               var6 = this.n(var11 - var12, var6);
            }

            System.arraycopy(var8, var4, var8, var4 + var6, var12 - var4);
            zbbi.c(var8, var12 + var6, var11);
            a(var8, var9 + 1, var4 + var6);
            return var1;
         } else if (var2 - var10 + var11 - var12 >= var6) {
            System.arraycopy(var8, var2, var8, var10, var3 - var2);
            var6 -= var2 - var10;
            System.arraycopy(var8, var4, var8, var4 + var6, var12 - var4);
            zbbi.c(var8, var12 + var6, var11);
            a(var8, var9 + 1, var4 + var6);
            a(var8, var9, var10);
            return var1;
         } else {
            if (var9 < (var8[0] & 255) - 2) {
               var11 = a(var8, var8[0] & 255);
               var12 = zbbi.d(var8, a(var8, (var8[0] & 255) - 1), var11);
            }

            if (var8.length - var12 < var6) {
               if (!var7) {
                  var6 += this.g;
               }

               byte[] var13 = new byte[var11 + var6 + this.m(var8[0] & 255, var12)];
               System.arraycopy(var8, 0, var13, 0, var3);
               System.arraycopy(var8, var4, var13, var4 + var6, var12 - var4);
               this.a[var1 >> 5] = var13;
               zbbi.c(var13, var12 + var6, Math.min(var11 + var6, var13.length));
               this.b(var13, var9 + 1, var6);
               return var1;
            } else {
               if (!var7) {
                  var6 = this.n(var8.length - var11 >= var6 ? var8.length - var11 : var8.length - var12, var6);
               }

               System.arraycopy(var8, var4, var8, var4 + var6, var12 - var4);
               zbbi.c(var8, var12 + var6, Math.min(var11 + var6, var8.length));
               this.b(var8, var9 + 1, var6);
               return var1;
            }
         }
      }
   }

   private int a(int var1, int var2, zahy var3, int var4, int var5, int var6, int var7, int var8) {
      int var9 = var1;
      int var10 = var4;
      int var11 = var5;
      int var12 = var6;
      int var13 = var7;
      int var14 = var8;
      if (var1 > this.b) {
         if (this.a[this.b + 1] == null) {
            var3.a(-1);
            this.a[this.b + 1] = new byte[Math.max(this.d, var3.a())];
         } else if (!var3.a(this.a[this.b + 1].length)) {
            this.a[this.b + 1] = new byte[Math.max(this.d, var3.a())];
         }

         return 97;
      } else {
         if (var1 < 0) {
            if (this.b < 0) {
               if (this.a[0] == null) {
                  var3.a(-1);
                  this.a[0] = new byte[Math.max(this.d, var3.a())];
               } else if (!var3.a(this.a[0].length)) {
                  this.a[0] = new byte[Math.max(this.d, var3.a())];
               }

               return 97;
            }

            var9 = this.b;
         }

         byte[] var15 = this.a[var9];
         byte[] var16;
         if (var2 >= 0 && var2 < (var15[0] & 255)) {
            if (var6 < 0) {
               var12 = a(var15, var2);
            }

            if (var2 > 0) {
               if (var5 < 0) {
                  if (var4 < 0) {
                     var10 = a(var15, var2 - 1);
                  }

                  var11 = zbbi.d(var15, var10, var12);
               }

               if (var3.a(var12 - var11)) {
                  return var12 - var3.a();
               }
            } else {
               var11 = var12;
            }

            if (var8 < 0) {
               var14 = a(var15, var2 + 1);
            }

            if (var7 < 0) {
               var13 = zbbi.d(var15, var12, var14);
            }

            if (var3.a(var12 - var11 + var14 - var13)) {
               System.arraycopy(var15, var12, var15, var11 + var3.a(), var13 - var12);
               zbbi.c(var15, var13 + var11 + var3.a() - var12, var14);
               return var11;
            } else {
               if ((var15[0] & 255) > var2 + 1) {
                  var14 = a(var15, var15[0] & 255);
                  var13 = zbbi.d(var15, a(var15, (var15[0] & 255) - 1), var14);
               }

               if (!var3.a(var15.length - var14) && !var3.a(var15.length - var13)) {
                  if (var3.a(var15.length - var13 + var12 - var11)) {
                     int var17 = var11 + var3.a();
                     System.arraycopy(var15, var12, var15, var17, var13 - var12);
                     var17 -= var12;
                     zbbi.c(var15, var13 + var17, Math.min(var15.length, var14 + var17));
                     this.b(var15, var2 + 1, var17);
                     return var11;
                  } else {
                     var3.a(-1);
                     var16 = new byte[var13 + Math.max(var3.a(), this.m(var15[0] & 255, var13))];
                     System.arraycopy(var15, 0, var16, 0, (var15[0] & 255) * 3 + 1);
                     System.arraycopy(var15, 97, var16, 97, var11 - 97);
                     System.arraycopy(var15, var12, var16, var12 + var3.a(), var13 - var12);
                     this.a[var9] = var16;
                     zbbi.c(var16, var13 + var3.a(), Math.min(var16.length, var14 + var3.a()));
                     this.b(var16, var2 + 1, var3.a());
                     return var12;
                  }
               } else {
                  System.arraycopy(var15, var12, var15, var12 + var3.a(), var13 - var12);
                  zbbi.c(var15, var13 + var3.a(), Math.min(var15.length, var14 + var3.a()));
                  this.b(var15, var2 + 1, var3.a());
                  return var12;
               }
            }
         } else {
            if (var6 < 0) {
               var12 = a(var15, var15[0] & 255);
            }

            if (var3.a(var15.length - var12)) {
               return var12;
            } else {
               if (var5 < 0) {
                  if (var4 < 0) {
                     var10 = a(var15, (var15[0] & 255) - 1);
                  }

                  var11 = zbbi.d(var15, var10, var12);
               }

               if (var3.a(var15.length - var11)) {
                  return var11;
               } else {
                  var3.a(-1);
                  var16 = new byte[var12 + Math.max(var3.a(), this.m(var15[0] & 255, var11))];
                  System.arraycopy(var15, 0, var16, 0, var11);
                  this.a[var9] = var16;
                  return var11;
               }
            }
         }
      }
   }

   private int m(int var1, int var2) {
      return var1 == 32 ? this.g << 3 : (int)((float)Math.min(32 - var1, this.e) / (float)var1 * (float)(var2 - 97));
   }

   private int n(int var1, int var2) {
      return Math.min(var1, var2 + this.g);
   }

   private void b(byte[] var1, int var2, int var3) {
      --var2;
      int var4 = var2 * 3 + 1;

      int var6;
      for(int var5 = var3 > 0 ? (var1[0] & 255) - 1 : var1[0] & 255; var2 < var5; ++var2) {
         var6 = ((var1[var4] & 255) << 16 | (var1[var4 + 1] & 255) << 8 | var1[var4 + 2] & 255) + var3;
         var1[var4++] = (byte)(var6 >> 16);
         var1[var4++] = (byte)(var6 >> 8 & 255);
         var1[var4++] = (byte)(var6 & 255);
      }

      if (var3 > 0) {
         var6 = Math.min(((var1[var4] & 255) << 16 | (var1[var4 + 1] & 255) << 8 | var1[var4 + 2] & 255) + var3, var1.length - 97);
         var1[var4++] = (byte)(var6 >> 16);
         var1[var4++] = (byte)(var6 >> 8 & 255);
         var1[var4++] = (byte)(var6 & 255);
      }

   }

   int a(int var1, int var2, int var3, int var4, int var5, boolean var6) {
      int var7 = var5;
      if (var5 < 0) {
         var7 = this.g;
      }

      int var8 = var1 >> 5;
      int var9 = (var1 & 31) + 1;
      byte[] var10;
      int var11;
      if (var6 && var9 == 1 && var8 > 0) {
         var10 = this.a[var8 - 1];
         var11 = a(var10, var10[0] & 255);
         if (var10.length > var11 + var7) {
            byte[] var12 = new byte[var11 + var7];
            System.arraycopy(var10, 0, var12, 0, var11);
            this.a[var8 - 1] = var12;
         }
      }

      var10 = this.a[var8];
      if (var9 == (var10[0] & 255)) {
         a(var10, var9, var3 + var7);
         if (var6 && var10.length > var3 + var7 && ((var10[0] & 255) == 32 || (var8 << 5) + 32 - 1 == zbbi.a(var10, var2))) {
            byte[] var13 = new byte[var3 + var7];
            System.arraycopy(var10, 0, var13, 0, var3);
            this.a[var8] = var13;
         }
      } else if (var6) {
         var11 = zbbi.d(var10, var4, a(var10, var9 + 1));
         System.arraycopy(var10, var4, var10, var3 + var7, var11 - var4);
         a(var10, var9, var3 + var7);
         var10[var11 + var3 + var7 - var4] = 0;
      } else {
         System.arraycopy(var10, var4, var10, var3 + var7, a(var10, var10[0] & 255) - var4);
         this.b(var10, var9, var3 + var7 - var4);
      }

      return var1;
   }

   public void j(int var1, int var2) {
      this.e = var1;
      this.f = var2;
      this.g = zbbi.q(var2);
      this.j.b(this.g);
      this.k.b(this.f);
      this.l.b(this.f);
   }

   private int m(int var1) {
      return var1 & -32;
   }

   private void d(int var1, zbbj var2, int var3) {
      ++this.b;
      if (this.b < this.a.length) {
         System.arraycopy(this.a, var1, this.a, var1 + 1, this.b - var1);
      } else {
         byte[][] var5 = new byte[this.b + this.e()][];
         System.arraycopy(this.a, 0, var5, 0, var1);
         System.arraycopy(this.a, var1, var5, var1 + 1, this.b - var1);
         this.a = var5;
      }

      byte[] var6 = new byte[var3 + this.d];
      this.a[var1] = var6;
      var6[0] = 1;
      ++this.c;
      int var4 = var3 + 97;
      a(var6, 1, var4);
      zbbi.a(var6, 97, var4, var2);
   }

   public int a(int var1, zbbj var2, int var3) {
      int var4 = var1;
      this.k.a(var2, var3);
      if (this.b < 0) {
         this.k.a(-1);
         this.d(0, var2, this.k.a());
         return 0;
      } else {
         int var5;
         int var6;
         if (var1 < 0) {
            if (var2.a >= this.m(zbbi.a((byte[])this.a[this.b], 97)) + 32) {
               this.k.a(-1);
               this.d(this.b + 1, var2, this.k.a());
               return this.b << 5;
            }

            var5 = this.b;
            var6 = this.a[this.b][0] & 255;
            var4 = var5 << 5 | var6;
         } else {
            var5 = var1 >> 5;
            if (var5 > this.b) {
               this.k.a(-1);
               this.d(this.b + 1, var2, this.k.a());
               return this.b << 5;
            }

            var6 = var1 & 31;
            if (var6 == 0 && var2.a < this.m(zbbi.a((byte[])this.a[var5], 97))) {
               this.k.a(-1);
               this.d(var5, var2, this.k.a());
               return var1;
            }
         }

         int var7 = this.a(var5, var6, this.k, -1, -1, -1, -1, -1);
         byte[] var8 = this.a[var5];
         int var9 = var6 * 3 + 1;
         if (var6 < (var8[0] & 255)) {
            System.arraycopy(var8, var9, var8, var9 + 3, ((var8[0] & 255) - var6) * 3);
         }

         ++var8[0];
         ++this.c;
         if (var6 > 0) {
            a(var8, var6, var7);
         }

         a(var8, var6 + 1, var7 + this.k.a());
         this.k.a(var8, var7);
         return var4;
      }
   }

   private void a(int var1, zbbi var2) {
      ++this.b;
      ++this.c;
      if (this.b < this.a.length) {
         System.arraycopy(this.a, var1, this.a, var1 + 1, this.b - var1);
      } else {
         byte[][] var3 = new byte[this.b + this.e()][];
         System.arraycopy(this.a, 0, var3, 0, var1);
         System.arraycopy(this.a, var1, var3, var1 + 1, this.b - var1);
         this.a = var3;
      }

      int var5 = var2.n() - var2.o();
      byte[] var4 = new byte[var5 + this.g + this.d];
      this.a[var1] = var4;
      var4[0] = 1;
      a(var4, 1, 97 + var5 + this.g);
      System.arraycopy(var2.l(), var2.o(), var4, 97, var5);
   }

   public int a(int var1, zp var2, boolean var3) {
      int var4 = var1;
      if (var2 instanceof zbbi) {
         zbbi var5 = (zbbi)var2;
         if (this.b < 0) {
            this.a(0, var5);
            return 0;
         } else {
            int var6;
            int var7;
            if (var1 < 0) {
               if (var5.h() >= this.m(zbbi.a((byte[])this.a[this.b], 97)) + 32) {
                  this.a(this.b + 1, var5);
                  return this.b << 5;
               }

               var6 = this.b;
               var7 = this.a[this.b][0] & 255;
               var4 = var6 << 5 | var7;
            } else {
               var6 = var1 >> 5;
               if (var6 > this.b) {
                  this.a(this.b + 1, var5);
                  return this.b << 5;
               }

               var7 = var1 & 31;
               if (var7 == 0 && var5.h() < this.m(zbbi.a((byte[])this.a[var6], 97))) {
                  this.a(var6, var5);
                  return var1;
               }
            }

            int var8 = var5.n() - var5.o();
            this.j.a(-var8, 1);
            int var9 = this.a(var6, var7, this.j, -1, -1, -1, -1, -1);
            byte[] var10 = this.a[var6];
            int var11 = var7 * 3 + 1;
            System.arraycopy(var10, var11, var10, var11 + 3, ((var10[0] & 255) - var7) * 3);
            ++var10[0];
            ++this.c;
            if (var7 > 0) {
               a(var10, var7, var9);
            }

            a(var10, var7 + 1, var9 + this.j.a());
            System.arraycopy(var5.l(), var5.o(), var10, var9, var8);
            return var4;
         }
      } else {
         return super.a(var1, var2, var3);
      }
   }

   public int a(int var1, zr var2, int var3, int var4, boolean var5) {
      int var6 = var1;
      int var7 = var3;
      if (var3 < 0) {
         var7 = 0;
      }

      switch(var4) {
      case 0:
         return var1;
      case 1:
         return this.a(var1, var2.f(var7), var5);
      default:
         int var8;
         int var10;
         if (var2 instanceof zbay) {
            boolean var22 = true;
            int var23 = var7;
            var10 = 0;
            int var14;
            int var15;
            int var19;
            zbbi var20;
            int var25;
            int var27;
            int var28;
            zbbi var29;
            if (this.b < 0) {
               var8 = this.m(var2.a(var7)) + 32;
            } else {
               zahl var11 = var2.a(var7, -1, false);
               boolean var12 = true;
               boolean var13 = false;
               byte[] var17;
               int var18;
               if (var1 < 0) {
                  var25 = var2.a(var7);
                  var8 = this.m(var25);
                  if (var8 <= zbbi.a((byte[])this.a[this.b], 97)) {
                     var13 = true;
                     var10 = this.b;
                     var6 = var10 << 5 | this.a[this.b][0] & 255;
                  } else {
                     var10 = this.b + 1;
                     var6 = var10 << 5;
                  }
               } else {
                  var10 = var1 >> 5;
                  var14 = var1 & 31;
                  if (var14 == 0) {
                     var25 = var2.a(var7);
                     var8 = this.m(var25);
                     if (var10 > 0 && zbbi.a((byte[])this.a[var10 - 1], 97) >= var8) {
                        var13 = true;
                        --var10;
                     }
                  } else {
                     if (var14 < (this.a[var10][0] & 255)) {
                        var15 = 0;

                        for(var27 = 0; var27 < var4; ++var27) {
                           var29 = (zbbi)var2.f(var11.a());
                           var15 += var29.n() - var29.o();
                        }

                        var11.b();
                        this.j.a(-var15, var4);
                        var27 = this.a(var10, var14, this.j, -1, -1, -1, -1, -1);
                        var17 = this.a[var10];
                        var18 = var14 * 3 + 1;
                        System.arraycopy(var17, var18, var17, var18 + var4 * 3, ((var17[0] & 255) - var14) * 3);
                        var17[0] = (byte)((var17[0] & 255) + var4);
                        this.c += var4;

                        for(var19 = 0; var19 < var4; ++var19) {
                           a(var17, var14 + var19, var27);
                           var20 = (zbbi)var2.f(var11.a());
                           var15 = var20.n() - var20.o();
                           System.arraycopy(var20.l(), var20.o(), var17, var27, var15);
                           var27 += var15;
                        }

                        a(var17, var14 + var4, var27);
                        return var1;
                     }

                     var25 = var2.a(var7);
                     var8 = this.m(var25);
                     if (zbbi.a((byte[])this.a[var10], 97) >= var8) {
                        var13 = true;
                     } else {
                        ++var10;
                     }
                  }
               }

               var8 += 32;
               if (var13) {
                  var14 = 0;

                  for(var15 = 0; var14 < var4; ++var14) {
                     var23 = var11.a();
                     zbbi var16 = (zbbi)var2.f(var23);
                     var25 = var16.h();
                     if (var25 >= var8) {
                        break;
                     }

                     var15 += var16.n() - var16.o();
                  }

                  var11.b();
                  this.j.a(-var15, var14);
                  var27 = this.a(var10, -1, this.j, -1, -1, -1, -1, -1);
                  var17 = this.a[var10];
                  var18 = var17[0] & 255;
                  var17[0] = (byte)((var17[0] & 255) + var14);

                  for(var19 = 0; var19 < var14; ++var19) {
                     a(var17, var18 + var19, var27);
                     var20 = (zbbi)var2.f(var11.a());
                     var15 = var20.n() - var20.o();
                     System.arraycopy(var20.l(), var20.o(), var17, var27, var15);
                     var27 += var15;
                  }

                  a(var17, var18 + var14, var27);
                  this.c += var14;
                  var6 = var10 << 5 | var18;
                  if (var14 == var4) {
                     return var6;
                  }

                  ++var10;
                  var4 -= var14;
                  var8 += 32;
               }

               if (var10 <= this.b) {
                  var14 = this.m(zbbi.a((byte[])this.a[var10], 97));
                  var15 = var23;
                  var27 = 0;
                  if (var25 < var14) {
                     for(var27 = 1; var27 < var4; ++var27) {
                        var15 = var11.a();
                        if (var2.a(var15) >= var14) {
                           break;
                        }
                     }
                  }

                  if (var27 < var4) {
                     var28 = 0;
                     var11 = var2.a(var15, -1, false);
                     var27 = var4 - var27;

                     for(var18 = 0; var18 < var27; ++var18) {
                        zbbi var32 = (zbbi)var2.f(var11.a());
                        var28 += var32.n() - var32.o();
                     }

                     var11.b();
                     this.j.a(-var28, var27);
                     var18 = this.a(var10, 0, this.j, -1, -1, -1, -1, -1);
                     byte[] var33 = this.a[var10];
                     System.arraycopy(var33, 1, var33, var27 * 3 + 1, (var33[0] & 255) * 3);
                     var33[0] = (byte)((var33[0] & 255) + var27);

                     for(int var34 = 0; var34 < var27; ++var34) {
                        zbbi var21 = (zbbi)var2.f(var11.a());
                        var28 = var21.n() - var21.o();
                        System.arraycopy(var21.l(), var21.o(), var33, var18, var28);
                        var18 += var28;
                        a(var33, var34 + 1, var18);
                     }

                     this.c += var27;
                     if (var4 == var27) {
                        return var6;
                     }

                     var4 -= var27;
                  }
               }
            }

            byte[][] var24 = new byte[var4][];
            var25 = 0;
            zahl var26 = var2.a(var23, -1, false);
            var14 = 0;
            var15 = 0;

            byte[] var31;
            for(var27 = 0; var27 < var4; ++var27) {
               var29 = (zbbi)var2.f(var26.a());
               if (var29.h() >= var8) {
                  var31 = new byte[var14 + 97];
                  var31[0] = (byte)var15;
                  var24[var25] = var31;
                  ++var25;
                  var14 = 0;
                  var15 = 0;
                  var19 = var29.h();

                  do {
                     var8 += 32;
                  } while(var19 >= var8);
               }

               var14 += var29.n() - var29.o();
               ++var15;
            }

            var24[var25] = new byte[var14 + 97];
            var24[var25][0] = (byte)var15;
            ++var25;
            if (this.a.length < this.b + 1 + var25) {
               byte[][] var30 = new byte[this.b + 1 + var25 + this.e()][];
               System.arraycopy(this.a, 0, var30, 0, var10);
               System.arraycopy(this.a, var10, var30, var10 + var25, this.b - var10 + 1);
               this.a = var30;
            } else {
               System.arraycopy(this.a, var10, this.a, var10 + var25, this.b - var10 + 1);
            }

            var26.b();

            for(var28 = 0; var28 < var25; ++var28) {
               var27 = 97;
               var31 = var24[var28];
               this.a[var10 + var28] = var31;

               for(var19 = 0; var19 < (var31[0] & 255); ++var19) {
                  var20 = (zbbi)var2.f(var26.a());
                  var14 = var20.n() - var20.o();
                  System.arraycopy(var20.l(), var20.o(), var31, var27, var14);
                  var27 += var14;
                  a(var31, var19 + 1, var27);
               }
            }

            this.b += var25;
            this.c += var4;
            return var6;
         } else {
            var8 = var1;
            this.l(var4);
            zahl var9 = var2.a(var7, -1, false);

            for(var10 = 0; var10 < var4; ++var10) {
               var7 = var9.a();
               if (var7 < 0) {
                  break;
               }

               var8 = this.a(var8, var2.f(var7), var5);
               this.f(var8).l(0, 0);
               var8 = this.a(var8, false);
            }

            return var1;
         }
      }
   }

   public int a() {
      return this.c;
   }

   public int b(int var1) {
      if (this.b < 0) {
         return -1;
      } else {
         int var2 = this.m(var1);
         return this.b(var1, var2, var2 + 32, 0, this.b);
      }
   }

   public int a(int var1, int var2) {
      if (this.b < 0) {
         return -1;
      } else if (var1 < 0) {
         return -1;
      } else {
         if (var2 < 0) {
            var2 = 0;
         }

         int var3 = var2 >> 5;
         int var4;
         byte[] var5;
         if (var3 > this.b) {
            var3 = this.b;
            var5 = this.a[var3];
            var4 = (var5[0] & 255) - 1;
            var2 = var3 << 5 | var4;
         } else {
            var5 = this.a[var3];
            var4 = var2 & 31;
            if (var4 >= (var5[0] & 255)) {
               var4 = (var5[0] & 255) - 1;
               var2 = var3 << 5 | var4;
            }
         }

         int var6 = zbbi.a(var5, a(var5, var4));
         if (var6 == var1) {
            return var2;
         } else {
            int var7 = this.m(var1);
            int var8 = var7 + 32;
            if (var6 > var1) {
               if (var6 >= var8) {
                  return var3 < 1 ? -1 : this.b(var1, var7, var8, 0, var3 - 1);
               } else if (var4 == 0) {
                  return -(var3 << 5) - 1;
               } else {
                  var6 = this.a(var1, var5, Math.max(var4 + var1 - var6, 0), var4 - 1);
                  return var6 < 0 ? -(var3 << 5) + var6 : (var3 << 5) + var6;
               }
            } else if (var6 < var7) {
               return var3 == this.b ? -(this.b + 1 << 5) - 1 : this.b(var1, var7, var8, var3 + 1, this.b);
            } else if (var4 == (var5[0] & 255) - 1) {
               return -(var3 << 5) - var4 - 2;
            } else {
               var6 = this.a(var1, var5, var4 + 1, Math.min(var4 + var1 - var6, (var5[0] & 255) - 1));
               return var6 < 0 ? -(var3 << 5) + var6 : (var3 << 5) + var6;
            }
         }
      }
   }

   public int a(int var1, int var2, int var3) {
      if (this.b < 0) {
         return -1;
      } else {
         int var4 = this.m(var1);
         int var5 = var4 + 32;
         int var6;
         int var9;
         if (var2 < 0) {
            if (var3 < 0) {
               return this.b(var1, var4, var5, 0, this.b);
            }

            var2 = 0;
         } else if (var2 > 0) {
            var6 = var2 >> 5;
            if (var6 > this.b) {
               return -(this.b << 5) - 32 - 1;
            }

            int var7 = var2 & 31;
            byte[] var8 = this.a[var6];
            if (var7 >= (var8[0] & 255)) {
               if (zbbi.a((byte[])var8, 97) >= var4) {
                  return -(var6 << 5) - (var8[0] & 255) - 1;
               }

               ++var6;
               if (var6 > this.b) {
                  return -(this.b << 5) - 32 - 1;
               }

               var7 = 0;
               var2 = var6 << 5;
               var8 = this.a[var6];
            }

            var9 = zbbi.a(var8, a(var8, var7));
            if (var9 == var1) {
               return var2;
            }

            if (var9 > var1) {
               return -var2 - 1;
            }

            if (var9 >= var4) {
               if (var7 == (var8[0] & 255) - 1) {
                  return -var2 - 2;
               }

               var9 = this.a(var1, var8, var7 + 1, Math.min(var7 + var1 - var9, (var8[0] & 255) - 1));
               if (var9 < 0) {
                  return -(var6 << 5) + var9;
               }

               return (var6 << 5) + var9;
            }

            var2 = var6 + 1;
            if (var2 > this.b) {
               return -(var2 << 5) - 1;
            }
         }

         if (var3 < 0) {
            return this.b(var1, var4, var5, var2, this.b);
         } else {
            var6 = var3 >> 5;
            if (var6 > this.b) {
               return this.b(var1, var4, var5, var2, this.b);
            } else {
               byte[] var10 = this.a[var6];
               int var11 = var3 & 31;
               if (var11 >= (var10[0] & 255) - 1) {
                  return this.b(var1, var4, var5, var2, var6);
               } else {
                  var9 = zbbi.a(var10, a(var10, var11));
                  if (var1 == var9) {
                     return var3;
                  } else if (var1 > var9) {
                     return -var3 - 2;
                  } else if (var9 >= var5) {
                     --var6;
                     return var6 < var2 ? var2 << 5 : this.b(var1, var4, var5, var2, var6);
                  } else if (var11 == 0) {
                     return -var3 - 1;
                  } else {
                     var9 = this.a(var1, var10, Math.max(0, var11 + var1 - var9), var11 - 1);
                     return var9 < 0 ? -(var6 << 5) + var9 : (var6 << 5) + var9;
                  }
               }
            }
         }
      }
   }

   private int b(int var1, int var2, int var3, int var4, int var5) {
      var5 = Math.min(var5, var2 >> 5);
      var4 = Math.min(var4, var5);

      while(true) {
         int var6 = var4 + var5 >> 1;
         byte[] var8 = this.a[var6];
         int var7 = zbbi.a((byte[])var8, 97);
         if (var7 == var1) {
            return var6 << 5;
         }

         if (var7 >= var3) {
            if (var4 == var6) {
               return -(var6 << 5) - 1;
            }

            var5 = var6 - 1;
            var4 = Math.max(var4, var6 - (this.m(var7) - var2 >> 5));
         } else {
            if (var7 >= var2) {
               if (var7 > var1) {
                  return -(var6 << 5) - 1;
               }

               if ((var8[0] & 255) < 2) {
                  return -(var6 << 5) - 2;
               }

               var7 = this.a(var1, var8, 1, Math.min(var1 - var7, (var8[0] & 255) - 1));
               if (var7 < 0) {
                  return -(var6 << 5) + var7;
               }

               return (var6 << 5) + var7;
            }

            if (var5 == var6) {
               return -(var6 + 1 << 5) - 1;
            }

            var4 = var6 + 1;
            var5 = Math.min(var5, var6 - (this.m(var7) - var2 >> 5));
         }
      }
   }

   private int a(int var1, byte[] var2, int var3, int var4) {
      while(true) {
         int var5 = var3 + var4 >> 1;
         int var6 = zbbi.a(var2, a(var2, var5));
         if (var6 == var1) {
            return var5;
         }

         if (var6 < var1) {
            if (var5 == var4) {
               return -var5 - 2;
            }

            var4 = Math.min(var5 + var1 - var6, var4);
            var3 = var5 + 1;
         } else {
            if (var3 == var5) {
               return -var5 - 1;
            }

            var3 = Math.max(var5 + var1 - var6, var3);
            var4 = var5 - 1;
         }
      }
   }

   public int a(int var1) {
      byte[] var2 = this.a[var1 >> 5];
      return zbbi.a(var2, a(var2, var1 & 31));
   }

   public void a(boolean var1) {
      this.n = var1;
   }

   public zp f(int var1) {
      if (this.n) {
         return new zbbi(this, var1, this.i, this.h);
      } else {
         if (this.m != null && this.m.m() == var1) {
            this.m.f();
            if (this.m.m() == var1) {
               return this.m;
            }
         }

         this.m = new zbbi(this, var1, this.i, this.h);
         return this.m;
      }
   }

   public zbbj b(int var1, zbbj var2, int var3) {
      byte[] var4 = this.a[var1 >> 5];
      zbbi.a(var4, a(var4, var1 & 31), var2, var3);
      return var2;
   }

   public void c(int var1, zbbj var2, int var3) {
      this.f(var1).b(var2, var3);
   }

   public byte k(int var1, int var2) {
      byte[] var3 = this.a[var1 >> 5];
      return zbbi.a(var3, a(var3, var1 & 31), var2);
   }

   public void a(int var1, int var2, byte var3) {
      byte[] var4 = this.a[var1 >> 5];
      zbbi.a(var4, a(var4, var1 & 31), var2, var3);
   }

   public int g(int var1) {
      byte[] var2 = this.a[var1 >> 5];
      return zbbi.b(var2, a(var2, var1 & 31));
   }

   public zp a(Object var1) {
      return new zbbi(this, this.i, this.h, var1);
   }

   public int b(int var1, int var2) {
      return this.a(var1, var2);
   }

   public int c(int var1) {
      if (this.b < 0) {
         return -1;
      } else if (var1 == 0) {
         return 0;
      } else {
         int var2 = 0;

         for(int var4 = 0; var4 <= this.b; ++var4) {
            int var3 = this.a[var4][0] & 255;
            if (var2 + var3 > var1) {
               return (var4 << 5) + var1 - var2;
            }

            var2 += var3;
         }

         return -(this.b << 5) - (this.a[this.b][0] & 255);
      }
   }

   public int d(int var1) {
      int var2 = (var1 >> 5) - 1;

      for(var1 &= 31; var2 > -1; --var2) {
         var1 += this.a[var2][0] & 255;
      }

      return var1;
   }

   public int a(int var1, boolean var2) {
      if (this.b < 0) {
         return -1;
      } else {
         int var3;
         if (var2) {
            if (var1 < 0) {
               return this.b << 5 | (this.a[this.b][0] & 255) - 1;
            } else if (var1 > 0) {
               var3 = var1 >> 5;
               if (var3 > this.b) {
                  return this.b << 5 | (this.a[this.b][0] & 255) - 1;
               } else {
                  return (var1 & 31) == 0 ? var3 - 1 << 5 | (this.a[var3 - 1][0] & 255) - 1 : var1 - 1;
               }
            } else {
               return -1;
            }
         } else if (var1 < 0) {
            return 0;
         } else {
            var3 = var1 >> 5;
            if ((var1 & 31) < (this.a[var3][0] & 255) - 1) {
               return var1 + 1;
            } else {
               return var3 < this.b ? var3 + 1 << 5 : -(this.b << 5 | this.a[this.b][0] & 255);
            }
         }
      }
   }

   public zahl b() {
      return new zbay.zb(this, -1, 0, -1, this.b < 0 ? -1 : this.b << 5 | (this.a[this.b][0] & 255) - 1);
   }

   public zahl a(int var1, int var2, boolean var3) {
      int var4;
      int var6;
      byte[] var7;
      int var8;
      if (var1 < 0) {
         var1 = 0;
         var4 = -1;
      } else if (this.b < 0) {
         var4 = 0;
      } else {
         var6 = var1 >> 5;
         if (var6 > this.b) {
            var7 = this.a[this.b];
            var1 = (var6 << 5) + (var7[0] & 255);
            var4 = zbbi.a(var7, a(var7, (var7[0] & 255) - 1)) + 1;
         } else {
            var7 = this.a[var6];
            var8 = var1 & 31;
            if (var8 >= (var7[0] & 255)) {
               var1 = (var6 << 5) + (var7[0] & 255);
               var4 = zbbi.a(var7, a(var7, (var7[0] & 255) - 1)) + 1;
            } else {
               var4 = zbbi.a(var7, a(var7, var8));
            }
         }
      }

      int var5;
      if (var2 < 0) {
         var2 = this.b < 0 ? -1 : this.b << 5 | (this.a[this.b][0] & 255) - 1;
         var5 = -1;
      } else {
         if (this.b < 0) {
            boolean var9 = false;
            var2 = -1;
         } else {
            var6 = var2 >> 5;
            if (var6 > this.b) {
               var7 = this.a[this.b];
               var2 = (this.b << 5) + ((var7[0] & 255) - 1);
               var5 = zbbi.a(var7, a(var7, (var7[0] & 255) - 1)) + 1;
            } else {
               var7 = this.a[var6];
               var8 = var2 & 31;
               if (var8 >= (var7[0] & 255)) {
                  var2 = (this.b << 5) + ((var7[0] & 255) - 1);
                  zbbi.a(var7, a(var7, (var7[0] & 255) - 1));
               } else {
                  zbbi.a(var7, a(var7, var8));
               }
            }
         }

         var5 = this.a(var2);
      }

      return (zahl)(var3 ? new zbay.za(this, var4, var1, var5, var2) : new zbay.zb(this, var4, var1, var5, var2));
   }

   public zahl a(int var1, int var2, int var3, int var4, boolean var5) {
      return (zahl)(var5 ? new zbay.za(this, var1, var2, var3, var4) : new zbay.zb(this, var1, var2, var3, var4));
   }

   public void l(int var1) {
      var1 >>= 5;
      ++var1;
      if (this.b + var1 >= this.a.length) {
         byte[][] var2 = new byte[this.b + var1][];
         System.arraycopy(this.a, 0, var2, 0, this.b + 1);
         this.a = var2;
      }

   }

   private int e() {
      return Math.max((this.e >> 5) + 1, 10);
   }

   public void c(int var1, int var2) {
      int var3;
      int var4;
      if (var2 < 0) {
         var2 = -var2;
         if (var1 < 0) {
            var3 = this.b;
            var1 = this.a[this.b][0] & 255;
         } else {
            var3 = var1 >> 5;
            var1 = (var1 & 31) + 1;
         }

         if (var1 >= var2) {
            this.b(var3, var1 - var2, var3, var1 - 1);
            return;
         }

         var2 -= var1;
         --var1;

         for(var4 = var3 - 1; var4 > -1; --var4) {
            if ((this.a[var4][0] & 255) >= var2) {
               this.b(var4, (this.a[var4][0] & 255) - var2, var3, var1);
               return;
            }
         }

         this.b(0, 0, var3, var1);
      } else {
         if (var1 < 0) {
            var1 = 0;
            var3 = 0;
         } else {
            var3 = var1 >> 5;
            var1 &= 31;
         }

         if ((this.a[var3][0] & 255) - var1 >= var2) {
            this.b(var3, var1, var3, var1 + var2 - 1);
            return;
         }

         var2 -= (this.a[var3][0] & 255) - var1;

         for(var4 = var3 + 1; var4 <= this.b; ++var4) {
            if ((this.a[var4][0] & 255) >= var2) {
               this.b(var3, var1, var4, var2 - 1);
               return;
            }
         }

         this.b(var3, var1, this.b, (this.a[this.b][0] & 255) - 1);
      }

   }

   private int b(int var1, int var2, int var3, int var4) {
      int var5 = 0;
      byte[] var6;
      int var7;
      if (var1 == var3) {
         ++var4;
         var6 = this.a[var1];
         if (var2 == 0 && var4 == (var6[0] & 255)) {
            var5 = var6[0] & 255;
            System.arraycopy(this.a, var3 + 1, this.a, var1, this.b - var3);
            --this.b;
         } else {
            var5 = var4 - var2;
            var7 = a(var6, var2);
            int var8 = a(var6, var4);
            System.arraycopy(var6, var8, var6, var7, a(var6, var6[0] & 255) - var8);
            this.b(var6, var4, var7 - var8);
            System.arraycopy(var6, var4 * 3 + 1, var6, var2 * 3 + 1, ((var6[0] & 255) - var4) * 3);
            var6[0] = (byte)((var6[0] & 255) - var5);
         }

         this.c -= var5;
         return var5;
      } else {
         if (var2 > 0) {
            var6 = this.a[var1];
            var5 = (var6[0] & 255) - var2;
            var6[0] = (byte)var2;
            ++var1;
         }

         if (var4 < (this.a[var3][0] & 255) - 1) {
            ++var4;
            var6 = this.a[var3];
            var5 += var4;
            var7 = a(var6, var4);
            System.arraycopy(var6, var7, var6, 97, a(var6, var6[0] & 255) - var7);
            this.b(var6, var4, 97 - var7);
            System.arraycopy(var6, var4 * 3 + 1, var6, 1, ((var6[0] & 255) - var4) * 3);
            var6[0] = (byte)((var6[0] & 255) - var4);
         } else {
            ++var3;
         }

         if (var1 < var3) {
            for(int var9 = var1; var9 < var3; ++var9) {
               var5 += this.a[var9][0] & 255;
            }

            System.arraycopy(this.a, var3, this.a, var1, this.b - var3 + 1);
            this.b -= var3 - var1;
         }

         this.c -= var5;
         return var5;
      }
   }

   public int d(int var1, int var2) {
      if (this.b < 0) {
         return 0;
      } else {
         int var3;
         if (var1 < 0) {
            var3 = 0;
            var1 = 0;
         } else {
            var3 = var1 >> 5;
            var1 &= 31;
         }

         int var4;
         if (var2 < 0) {
            var4 = this.b;
            var2 = (this.a[this.b][0] & 255) - 1;
         } else {
            var4 = var2 >> 5;
            var2 &= 31;
         }

         return var3 <= var4 && (var3 != var4 || var1 <= var2) ? this.b(var3, var1, var4, var2) : 0;
      }
   }

   public int e(int var1, int var2) {
      int var3 = 0;
      if (var1 < 0) {
         if (var2 < 0) {
            return this.c;
         }

         var1 = 0;
      } else {
         var3 = (this.a[var1][0] & 255) - var1;
         var1 = (var1 >> 5) + 1;
      }

      if (var2 < 0) {
         if (var1 == 0) {
            return this.c;
         }

         if (this.b < var1) {
            return var3;
         }

         var3 += this.a[this.b][0] & 255;
         var2 = this.b;
      } else {
         int var4 = var2 & 31;
         var2 >>= 5;
         if (var2 < var1) {
            return var3 - ((this.a[var2][0] & 255) - var4) + 1;
         }
      }

      if (var2 == var1) {
         return var3;
      } else {
         while(var1 < var2) {
            var3 += this.a[var1][0] & 255;
            ++var1;
         }

         return var3;
      }
   }

   private void b(int var1, int var2, int var3) {
      byte[] var4 = this.a[var1];
      int var5;
      int var6;
      int var7;
      int var8;
      int var9;
      if (var3 > 0) {
         var5 = var4[0] & 255;
         var6 = a(var4, var5);
         var7 = 0;
         var9 = a(var4, var2);

         while(var2 < var5) {
            ++var2;
            var8 = var9;
            var9 = a(var4, var2) + var7;
            int var11 = zbbi.b(var4, var8, var3);
            if (var11 > 0) {
               int var10 = zbbi.d(var4, var8, var9);
               if (var9 - var10 < var11) {
                  if (var4.length - var6 >= var11 - (var9 - var10)) {
                     System.arraycopy(var4, var9, var4, var9 + var11 - (var9 - var10), var6 - var9);
                  } else {
                     byte[] var12 = new byte[var4.length + 64];
                     this.a[var1] = var12;
                     System.arraycopy(var4, 0, var12, 0, var10);
                     System.arraycopy(var4, var9, var12, var9 + var11, var6 - var9);
                     var4 = var12;
                  }

                  var7 += var11;
                  var6 += var11;
                  var9 += var11;
                  zbbi.c(var4, var6, var4.length);
               }

               zbbi.a(var4, var8, var10, var9, var3, var11);
            }

            if (var7 > 0) {
               a(var4, var2, var9);
            }
         }
      } else if (var3 < 0) {
         var5 = var4[0] & 255;
         var7 = a(var4, var2);

         while(var2 < var5) {
            ++var2;
            var6 = var7;
            var7 = a(var4, var2);
            var9 = zbbi.b(var4, var6, var3);
            if (var9 < 0) {
               var8 = zbbi.d(var4, var6, var7);
               zbbi.a(var4, var6, var8, var7, var3, var9);
            }
         }
      }

   }

   private void a(byte[] var1, int var2, int var3, int var4) {
      var1[0] = (byte)((var1[0] & 255) - var2);
      System.arraycopy(var1, var2 * 3 + 1, var1, 1, (var1[0] & 255) * 3);
      System.arraycopy(var1, var3, var1, 97, var4);
      this.b(var1, 1, 97 - var3);
   }

   public void f(int var1, int var2) {
      if (var2 != 0) {
         int var3 = var1 >> 5;
         var1 &= 31;
         if (var3 <= this.b) {
            if (var1 >= (this.a[var3][0] & 255)) {
               ++var3;
               if (var3 > this.b) {
                  return;
               }

               var1 = 0;
            }

            byte[] var4;
            int var6;
            if (var2 % 32 == 0) {
               if (var1 > 0) {
                  var4 = this.a[var3];
                  ++var3;
                  ++this.b;
                  if (this.b == this.a.length) {
                     byte[][] var16 = new byte[this.b + this.e()][];
                     System.arraycopy(this.a, 0, var16, 0, var3);
                     System.arraycopy(this.a, var3, var16, var3 + 1, this.b - var3);
                     this.a = var16;
                  } else {
                     System.arraycopy(this.a, var3, this.a, var3 + 1, this.b - var3);
                  }

                  int var17 = a(var4, var1);
                  var6 = a(var4, var4[0] & 255) - var17;
                  byte[] var18 = new byte[97 + var6];
                  var18[0] = (byte)((var4[0] & 255) - var1);
                  System.arraycopy(var4, var1 * 3 + 1, var18, 1, (var18[0] & 255) * 3);
                  System.arraycopy(var4, var17, var18, 97, var6);
                  this.b(var18, 1, 97 - var17);
                  this.a[var3] = var18;
                  var4[0] = (byte)((var4[0] & 255) - var1);
                  this.b(var3, 0, var2);
                  ++var3;
                  if (var3 == this.b) {
                     return;
                  }
               }

               while(var3 <= this.b) {
                  this.b(var3, 0, var2);
                  ++var3;
               }

            } else {
               int var8 = 0;
               int var11 = 0;
               int var12 = 0;
               boolean var13 = false;
               byte[] var5;
               int var7;
               int var9;
               int var10;
               byte[] var14;
               byte var19;
               if (var2 > 0) {
                  var19 = 64;
                  var4 = this.a[var3];
                  var10 = var4[0] & 255;
                  var7 = var1;
                  if (var1 > 0) {
                     var6 = this.m(zbbi.a((byte[])var4, 97)) + 32 - var2;
                     if (var6 < 0) {
                        var8 = a(var4, var1);
                     } else {
                        while(var1 < var10) {
                           var8 = a(var4, var1);
                           if (zbbi.a(var4, var8) >= var6) {
                              break;
                           }

                           ++var1;
                        }
                     }

                     if (var1 < var10) {
                        var14 = new byte[var8 + this.m(var1, var8)];
                        System.arraycopy(var4, 0, var14, 0, var8);
                        var14[0] = (byte)var1;
                        this.a[var3] = var14;
                        if (var1 > var7) {
                           this.b(var3, var7, var2);
                        }

                        var6 = this.m(zbbi.a(var4, var8) + var2) + 32 - var2;
                        var7 = var1;

                        for(var9 = var8; var1 < var10; ++var1) {
                           var8 = a(var4, var1);
                           if (zbbi.a(var4, var8) >= var6) {
                              var11 = var10 - var1;
                              var6 += 32;
                              var14 = new byte[var8 - var9 + 97 + var19];
                              var14[0] = (byte)(var1 - var7);
                              System.arraycopy(var4, var7 * 3 + 1, var14, 1, (var14[0] & 255) * 3);
                              System.arraycopy(var4, var9, var14, 97, var8 - var9);
                              this.b(var14, 1, 97 - var9);
                              ++this.b;
                              ++var3;
                              if (this.a.length == this.b) {
                                 byte[][] var15 = new byte[this.b + this.e()][];
                                 System.arraycopy(this.a, 0, var15, 0, var3);
                                 System.arraycopy(this.a, var3, var15, var3 + 1, this.b - var3);
                                 this.a = var15;
                              } else {
                                 System.arraycopy(this.a, var3, this.a, var3 + 1, this.b - var3);
                              }

                              this.a[var3] = var14;
                              this.b(var3, 0, var2);
                              break;
                           }
                        }

                        if (var1 == var10) {
                           var1 = var7;
                           var11 = var10 - var7;
                           var8 = var8;
                        }

                        var12 = a(var4, var10) - var8;
                     } else {
                        this.b(var3, var7, var2);
                        var6 += 32;
                     }
                  } else {
                     var6 = this.m(zbbi.a((byte[])var4, 97) + var2) + 32 - var2;

                     for(var1 = 1; var1 < var10; ++var1) {
                        var8 = a(var4, var1);
                        if (zbbi.a(var4, var8) >= var6) {
                           var11 = var10 - var1;
                           var6 += 32;
                           var14 = new byte[var8 + var19];
                           System.arraycopy(var4, 0, var14, 0, var8);
                           var14[0] = (byte)var1;
                           this.a[var3] = var14;
                           break;
                        }
                     }

                     if (var1 == var10) {
                        var1 = 0;
                        var8 = 97;
                        var11 = var10;
                        System.arraycopy(this.a, var3 + 1, this.a, var3, this.b - var3);
                        --this.b;
                        --var3;
                     }

                     var12 = a(var4, var10) - var8;
                  }
               } else {
                  if (var3 == this.b && (var1 > 0 || var3 == 0)) {
                     this.b(var3, var1, var2);
                     return;
                  }

                  var19 = 0;
                  if (var3 == 0 && var1 == 0) {
                     var4 = this.a[var3];
                     var11 = var4[0] & 255;
                     var8 = 97;
                     var12 = a(var4, var11) - 97;
                     var6 = this.m(zbbi.a((byte[])var4, 97)) + 32 - var2;
                  } else {
                     if (var1 == 0) {
                        --var3;
                     }

                     var5 = this.a[var3];
                     var6 = this.m(zbbi.a((byte[])var5, 97)) + 32 - var2;
                     var4 = this.a[var3 + 1];
                     var10 = var4[0] & 255;
                     var7 = var1;

                     for(var1 = 0; var1 < var10; ++var1) {
                        var8 = a(var4, var1);
                        if (zbbi.a(var4, var8) >= var6) {
                           var6 += 32;
                           break;
                        }
                     }

                     if (var1 > 0) {
                        var9 = a(var5, var5[0] & 255);
                        if (var1 == var10) {
                           var8 = a(var4, var1);
                           var11 = 0;
                           var12 = 0;
                        } else {
                           var11 = var10 - var1;
                           var12 = a(var4, var10) - var8;
                        }

                        if (var5.length < var9 + var8 - 97) {
                           var14 = new byte[var9 + var8 - 97];
                           System.arraycopy(var5, 0, var14, 0, var9);
                           var5 = var14;
                           this.a[var3] = var14;
                        }

                        System.arraycopy(var4, 1, var5, (var5[0] & 255) * 3 + 1, var1 * 3);
                        System.arraycopy(var4, 97, var5, var9, var8 - 97);
                        var5[0] = (byte)((var5[0] & 255) + var1);
                        this.b(var5, (var5[0] & 255) - var1 + 1, var9 - 97);
                        this.b(var3, var7 == 0 ? (var5[0] & 255) - var1 : var7, var2);
                        --this.b;
                        if (var3 == this.b) {
                           if (var11 > 0) {
                              ++this.b;
                              this.a(var4, var1, var8, var12);
                              this.b(this.b, 0, var2);
                           }

                           return;
                        }

                        System.arraycopy(this.a, var3 + 2, this.a, var3 + 1, this.b - var3);
                     } else if (var7 > 0) {
                        this.b(var3, var7, var2);
                     } else {
                        var11 = var10;
                        var12 = a(var4, var10) - 97;
                        --this.b;
                        System.arraycopy(this.a, var3 + 2, this.a, var3 + 1, this.b - var3);
                     }
                  }
               }

               ++var3;

               byte[][] var20;
               for(; var3 <= this.b; ++var3) {
                  var5 = var4;
                  var7 = var1;
                  var9 = var8;
                  var4 = this.a[var3];
                  var10 = var4[0] & 255;

                  for(var1 = 0; var1 < var10; ++var1) {
                     var8 = a(var4, var1);
                     if (zbbi.a(var4, var8) >= var6) {
                        break;
                     }
                  }

                  if (var1 != 0) {
                     if (var1 == var10) {
                        var8 = a(var4, var10);
                        if (var11 == 0) {
                           this.a[var3] = var4;
                           this.b(var3, 0, var2);
                           var6 += 32;
                           continue;
                        }
                     }

                     var14 = new byte[var12 + var8 + var19];
                     if (var11 > 0) {
                        var14[0] = (byte)var11;
                        System.arraycopy(var5, var7 * 3 + 1, var14, 1, var11 * 3);
                        System.arraycopy(var5, var9, var14, 97, var12);
                        if (var9 > 97) {
                           this.b(var14, 1, 97 - var9);
                        }
                     }

                     var14[0] = (byte)((var14[0] & 255) + var1);
                     System.arraycopy(var4, 1, var14, var11 * 3 + 1, var1 * 3);
                     System.arraycopy(var4, 97, var14, 97 + var12, var8 - 97);
                     if (var11 > 0) {
                        this.b(var14, var11 + 1, var12);
                     }

                     this.a[var3] = var14;
                     this.b(var3, 0, var2);
                     var6 += 32;
                     if (var10 == var1) {
                        var11 = 0;
                        var12 = 0;
                     } else {
                        var11 = var10 - var1;
                        var12 = a(var4, var10) - var8;
                     }
                  } else {
                     if (var11 == (var5[0] & 255)) {
                        this.a[var3] = var5;
                        this.b(var3, 0, var2);
                     } else if (var11 > 0) {
                        this.a[var3] = var5;
                        this.a(var5, var7, var8, var12);
                        this.b(var3, 0, var2);
                     }

                     var6 = this.m(zbbi.a((byte[])var4, 97) + var2) + 32 - var2;

                     for(var1 = 1; var1 < var10; ++var1) {
                        var8 = a(var4, var1);
                        if (zbbi.a(var4, var8) >= var6) {
                           var11 = var10 - var1;
                           var6 += 32;
                           var12 = a(var4, var10) - var8;
                           ++this.b;
                           ++var3;
                           if (this.a.length == this.b) {
                              var20 = new byte[this.b + this.e()][];
                              System.arraycopy(this.a, 0, var20, 0, var3);
                              System.arraycopy(this.a, var3, var20, var3 + 1, this.b - var3);
                              this.a = var20;
                           } else {
                              System.arraycopy(this.a, var3, this.a, var3 + 1, this.b - var3);
                           }

                           var14 = new byte[var8 + var19];
                           this.a[var3] = var14;
                           var14[0] = (byte)var1;
                           System.arraycopy(var4, 1, var14, 1, var1 * 3);
                           System.arraycopy(var4, 97, var14, 97, var8 - 97);
                           this.b(var3, 0, var2);
                           break;
                        }
                     }

                     if (var1 == var10) {
                        var1 = 0;
                        var11 = var10;
                        var8 = 97;
                        var12 = a(var4, var10) - var8;
                     }
                  }
               }

               if (var11 > 0) {
                  if (var1 > 0) {
                     this.a(var4, var1, var8, var12);
                  }

                  if (var3 == this.a.length) {
                     var20 = new byte[var3 + this.e()][];
                     System.arraycopy(this.a, 0, var20, 0, var3);
                     this.a = var20;
                  }

                  this.a[var3] = var4;
                  this.b = var3;
                  this.b(var3, 0, var2);
               }

            }
         }
      }
   }

   public void e(int var1) {
      if (var1 > 0) {
         this.a = new byte[Math.max((var1 >> 5) + 1, 10)][];
      }

      this.b = -1;
      this.c = 0;
   }

   public boolean g(int var1, int var2) {
      if (var1 < -1) {
         var1 = (int)((float)this.a.length / 100.0F * (float)(-var1 - 1));
      } else if (var1 == -1) {
         var1 = this.e();
      }

      if (this.a.length - this.b - 1 <= var1) {
         return false;
      } else {
         if (var2 < 0) {
            var2 = this.e();
         }

         if (this.a.length - this.b - 1 <= var2) {
            return false;
         } else {
            byte[][] var3 = new byte[this.b + 1 + var2][];
            System.arraycopy(this.a, 0, var3, 0, this.b + 1);
            this.a = var3;
            return true;
         }
      }
   }

   public void a(int var1, int var2, int var3, int var4) {
      boolean var5 = false;
      float var6 = 0.0F;
      if (var3 > 0) {
         var3 = zbbi.q(var3);
      } else if (var3 == -1) {
         var3 = this.g;
      } else if (var3 < -1) {
         var5 = true;
         var6 = 1.0F + (float)(var3 + 1) / 100.0F;
      }

      if (var4 < 0) {
         var4 = this.g;
      } else {
         var4 = zbbi.q(var4);
      }

      if (!var5 && var3 < var4) {
         var4 = var3;
      }

      for(int var14 = 0; var14 <= this.b; ++var14) {
         byte[] var7 = this.a[var14];
         int var11 = var7[0] & 255;
         boolean var9 = false;
         int var13 = 97;
         int var8 = 0;

         for(int var15 = 0; var15 < var11; ++var15) {
            int var12 = var13;
            var13 = a(var7, var15 + 1);
            int var10 = zbbi.d(var7, var12, var13) - var12;
            if (var9) {
               System.arraycopy(var7, var12, var7, var8, var10);
               a(var7, var15, var8);
               var8 += var10 + var4;
            } else if (var5) {
               if (var10 < (int)((float)(var13 - var12) * var6)) {
                  var8 = var12 + var10 + var4;
                  var9 = true;
               }
            } else if (var13 - var12 - var10 > var3) {
               var8 = var12 + var10 + var4;
               var9 = true;
            }
         }

         if (var9) {
            a(var7, var11, var8);
            byte[] var16 = new byte[var8];
            System.arraycopy(var7, 0, var16, 0, var8);
            this.a[var14] = var16;
         }
      }

      this.g(var1, var2);
   }

   public zafu a(Cells var1, RowCollection var2, int var3) {
      switch(var3) {
      case 16:
      case 17:
      case 19:
         return new zgw(var1, var2, var3);
      case 18:
      default:
         return new zgv(var1, var2);
      }
   }

   private class za extends zi {
      private int g;
      private int h;
      private int i;
      private int j;

      za(zbay var2, int var3, int var4, int var5, int var6) {
         super(var2, var3, var4, var5, var6);
         if (var4 > -1) {
            this.g = var4 >> 5;
            this.h = var4 & 31;
         } else {
            this.g = 0;
         }

         this.b();
      }

      public void b() {
         if (this.e > -1) {
            this.i = this.e >> 5;
            this.j = (this.e & 31) + 1;
         } else {
            this.i = -1;
         }

      }

      public int a() {
         if (this.i > this.g) {
            --this.j;
            if (this.j < 0) {
               --this.i;
               this.j = (((zbay)this.c).a[this.i][0] & 255) - 1;
            }

            return this.i << 5 | this.j;
         } else if (this.i == this.g && this.j > this.h) {
            --this.j;
            return this.i << 5 | this.j;
         } else {
            return this.d < 0 ? this.d : -this.d - 1;
         }
      }

      public void b(int var1) {
         if (var1 < this.a) {
            this.i = this.g;
            this.j = this.h;
         } else if (var1 == this.a) {
            this.i = this.g;
            this.j = this.h + 1;
         } else if (this.b > -1 && var1 > this.b) {
            this.b();
         } else {
            int var2 = this.c.a(var1, this.d, this.e);
            if (var2 < 0) {
               var2 = -var2 - 1;
               this.i = var2 >> 5;
               this.j = var2 & 31;
            } else {
               this.i = var2 >> 5;
               this.j = (var2 & 31) + 1;
            }
         }

      }

      public void a(int var1, int var2) {
         super.a(var1, var2);
         this.g = this.d >> 5;
         this.h = this.d & 31;
      }

      protected void a(int var1) {
         if (var1 < 0) {
            var1 = -var1 - 1;
         }

         this.i = var1 >> 5;
         this.j = var1 & 31;
      }
   }

   private class zb extends zi {
      private int g;
      private int h;
      private int i;
      private int j;

      zb(zbay var2, int var3, int var4, int var5, int var6) {
         super(var2, var3, var4, var5, var6);
         if (var6 > -1) {
            this.g = var6 >> 5;
            this.h = var6 & 31;
         } else {
            this.g = -1;
         }

         this.b();
      }

      public void b() {
         if (this.d > -1) {
            this.i = this.d >> 5;
            this.j = (this.d & 31) - 1;
         } else {
            this.i = 0;
         }

      }

      public int a() {
         if (this.i < this.g) {
            ++this.j;
            if (this.j >= (((zbay)this.c).a[this.i][0] & 255)) {
               ++this.i;
               this.j = 0;
            }

            return this.i << 5 | this.j;
         } else if (this.i == this.g && this.j < this.h) {
            ++this.j;
            return this.i << 5 | this.j;
         } else {
            return this.e < 0 ? this.e : -this.e - 2;
         }
      }

      public void b(int var1) {
         if (var1 <= this.a) {
            this.b();
         } else if (var1 == this.b) {
            this.i = this.g;
            this.j = this.h - 1;
         } else if (this.b > -1 && var1 > this.b) {
            this.i = this.g;
            this.j = this.h;
         } else {
            int var2 = this.c.a(var1, this.d, this.e);
            if (var2 < 0) {
               var2 = -var2 - 1;
            }

            this.i = var2 >> 5;
            this.j = (var2 & 31) - 1;
         }

      }

      public void a(int var1, int var2) {
         super.a(var1, var2);
         if (this.e > -1) {
            this.g = this.e >> 5;
            this.h = this.e & 31;
         } else {
            this.g = -1;
         }

      }

      protected void a(int var1) {
         if (var1 < 0) {
            var1 = -var1 - 2;
         }

         this.i = var1 >> 5;
         this.j = var1 & 31;
      }
   }
}
